Overview

What is JProxy?

JProxy is a product that solves number of intercommunication problems between Java Client and J2EE and/or CORBA Services.
JProxy provides HTTP Tunneling for well-known APIs: EJB, RMI, JNDI, JMS and CORBA.
JProxy allows encapsulation of specifics of different J2EE and CORBA servers.
JProxy is a thin customizable layer for access distributed services and objects from Java. The layer may be applied for such APIs as CORBA, EJB, RMI, JMS, JNDI. It encapsulates provider's specifics of distributed services. It also allows customization of distributed object access in order to achieve better performance, fail-over, scalability. HTTP-Tunneling is one of application of the idea.

JProxy consist of Client-side part and Server-side part.
JProxy Server delegates JProxy Client's requests to appropriate remote objects. JProxy Server keeps references to remote objects and performs actual remote calls. When asynchronous communication is used, JProxy Client behaves as a Server.

JProxy Server generates client stubs for remote object. The stubs are completely independent from original stubs of remote object. Any communication protocol may be used in the stubs. The stubs may be customized in order to handle fail-over, load balancing, or optimization of communication.
JProxy may integrate variety of EJB or CORBA Application Servers from different providers into one system.
JProxy API provides for Applet or Application transparent access thru any protocol to J2EE or CORBA resources. The Applet/Application may function as a regular EJB/CORBA client without any awareness of the virtual layer. The client may safely use his RMI/CORBA environment plus extra features that will optimize the communication with the server.
For instance, JProxy may automatically package number of orthogonal requests to the server in one package and perform them as one request, which tremendously reduces traffic on such slow connections as Dial-up connection.
According to well-known EJB pattern, between web-client and EJB Server has to be some web-server. This pattern makes impossible using power of RMI or JMS on the Internet with its variety of firewalls. The JProxy is a solution that still been consistent with the pattern brings to the web-client full flavor of RMI/CORBA. Simply saying, if you want to use EJB or CORBA from Applet, consider using JProxy.

JProxy may seamlessly deliver asynchronous messages from JMS to client thru any firewall. For HTTP client-side callback support JProxy API utilizes two models. First it tries to use client-side HTTP-server that starts instantly during JProxy-client initialization. If it fails because of firewall, then JProxy automatically switches to polling that is transparent for client. The asynchronous messages are still seamlessly delivered to client in polling mode thru asynchronous listeners.
JProxy utilizes polling by opening temporary socket which timeout is equal to polling period. If any asynchronous messages are available during the period, then the messages will be transferred to client and the polling socket will be closed and reopened again immediately. If no asynchronous message is available during the polling period then socket will be timed-out and reopened immediately.
Te polling allows to receive messages as quick as they coming. Delay of message delivery is not related with polling period time. For example polling period time may be 1 minute, but JProxy client is still able to receive messages coming every second.
Beside it, on the client each JMS message will be performed in separate thread. More, client's requests are serialized to one communication thread that allows saving client's resources. During remote call client thread will be disabled till result comes back from the server. So you may perform remote calls without consuming power of your processor.

And all works in standard Java Security Sand-Box! You don't have to change java policy or to use your Security Manager at all!
JProxy with RMI/EJB/JMS/CORBA was also successfully tested on Microsoft's JVM under IE 5.5 which by default does not support the APIs!
JProxy controls lifetime of clients' connections to Application Server, resolves object's dependencies, automatically recycles objects when connection is broken.
JProxy will help you to solve scalability or fail-over problems. You may design cluster in your own way.
JProxy tries to use maximum from object-oriented technology. The API allows implementing of different demands: Data Compression, Security, Fautl-Tolerance. The developer may handle different low-level communication protocols to reach the J2EE server resources.


Copyright © 2001, JProxy